// package main
//
// import (
//
//	"fmt"
//	"time"
//
// )
//
// // 测试多返回值函数的错误
//
//	func main() {
//		now := time.Now()
//		fmt.Println(now)
//	}
//
// 经常使用两个返回值来表示执行是否成功：返回某个值以及 true 表示成功；返回零值（或 nil）和 false 表示失败
// 也可以使用一个 error 类型的变量来代替作为第二个返回值：成功执行的话，error 的值为 nil，否则就会包含相应的错误信息
// 如果没有为多返回值的函数准备变量去接受结果，就会报错
// 语言中的错误类型为 error: var err error
package main

import (
	"fmt"
	"strconv"
)

func main() {
	var orig = "ABC"
	// var an int
	var newS string
	// var err error

	fmt.Printf("The size of ints is: %d\n", strconv.IntSize) //strconv.IntSize查看int的位
	//anInt, _ = strconv.Atoi(origStr) 如果 origStr 不能被转换为整数，anInt 的值会变成 0 而 _ 无视了错误，程序会继续运行
	an, err := strconv.Atoi(orig)
	if err != nil {
		fmt.Printf("orig %s is not an integer - exiting with error\n", orig) //err不为空
		return                                                               //这里return掉代码将不会继续往下执行
		//os.Exit(1) 也可以用这个语句来结束
	}
	fmt.Printf("The integer is %d\n", an)
	an = an + 5
	newS = strconv.Itoa(an)
	fmt.Printf("The new string is: %s\n", newS)
}

//一般习惯用法都是 直接在if语句中执行可能会出现错误的语句，在进行条件判断
/**
if err := file.Chmod(0664); err != nil {
fmt.Println(err)
return err
}


if value, ok := readData(); ok {

}
*/
